 #pragma once

#include "cLateralPlayer.h"
#include "cTiledScene.h"
#include "cBackgroundScene.h"
#include "cSceneManager.h"
#include "cCamera.h"
#include "cScrollCamera.h"
#include "cChaseCamera.h"
#include "cPhysics.h"
#include "cAutonomousAgent.h"
#include "cAgentNest.h"
#include "cPositionedVisibleObject.h"
#include "cPositionedMessage.h"
#include "cObjectMap.h"
#include "cAbstractGame.h"


//#define GAME_TILED_WIDTH  500
//#define GAME_TILED_HEIGHT 33

class cGame:public cAbstractGame{
public:
    cGame(void);
    virtual ~cGame(void);

    bool Init(cData* Data, cCamera* cam);
    int Loop();
    void Finalize();

    //Input
    void ReadKeyboard(unsigned char key, int x, int y, bool press);
    void ReadMouse(int button, int state, int x, int y);
    //Process
    void Process();
    //Output
    void Render();

private:
    float time;

    cPhysics Physics;
    cLateralPlayer Player;
    list<cAgentNest*> AgentNestList;
    list<cAutonomousAgent*>  agentList;
    list<cPositionedVisibleObject*>  itemList;
    cPositionedMessage message;
    cObjectMap ObjectMap;
};
